﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLayer.Implementacion;
using BusinessLayer.Interfaces;
using EntityLayer;
using System.Configuration;
using System.IO;
namespace pryTransfinter.Alertas
{
    public partial class wucTransferenciasDuplicadas : System.Web.UI.UserControl
    {
        IFacadeGestionarTransferencia blGestionarTransferencia;
        IFacadeActualizarTransferencia blActualizarTransferencia; 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.cargarGridDuplicados();
            }
        }

        void cargarGridDuplicados()
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            try
            {
                //grdDuplicados.DataSource = blGestionarTransferencia.listarDuplicados(Convert.ToDateTime("2013-10-10"),Convert.ToDateTime("2013-10-09"));
                grdDuplicados.DataSource = blGestionarTransferencia.ListarTransferenciasDuplicadas();
                grdDuplicados.DataBind();
            }
            catch (Exception)
            {
                
            }
   
        }

        protected void grdDuplicados_FocusedRowChanged(object sender, EventArgs e)
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            List<Globales.lista_TransferenciaReponsable> lista = new List<Globales.lista_TransferenciaReponsable>();
            List<Globales.lista_TransferenciaReponsable> listaDuplicado = new List<Globales.lista_TransferenciaReponsable>();
            string idOpcion = Convert.ToString(grdDuplicados.GetRowValues(grdDuplicados.FocusedRowIndex, "NROOPERACION1"));
            string idOpcion2 = Convert.ToString(grdDuplicados.GetRowValues(grdDuplicados.FocusedRowIndex, "NROOPERACION2"));
            
            if (idOpcion != string.Empty)
            {
                lista = blGestionarTransferencia.listaVerificacionA(idOpcion);

                txtCliente.Text = lista[0].nomCliente;
                txtTelefono.Text = lista[0].telefonoCliente;
                txtTrasferencia1.Text = lista[0].nroOperacion;
                txtDetalle.Text = lista[0].detallePago;
                dptFechaC.Date = lista[0].fecCreacion;
            }
            if (idOpcion2!=string.Empty)
            {
                listaDuplicado = blGestionarTransferencia.listaVerificacionA(idOpcion2);
                
                txtTrasferencia2.Text = listaDuplicado[0].nroOperacion;
                txtdetalle2.Text = listaDuplicado[0].detallePago;
                dptFechaD.Date = listaDuplicado[0].fecCreacion;
            }
        }

        protected void grdDuplicados_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            this.cargarGridDuplicados();
        }

        protected void btnDuplicadas_Click(object sender, EventArgs e)
        {

            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();

            if (blGestionarTransferencia.actualizarEstado(Convert.ToString(grdDuplicados.GetRowValues(grdDuplicados.FocusedRowIndex, "NROOPERACION1")), "DUPLICADA", null))
            {
                this.cargarGridDuplicados();
                lblmensOk.Text = "El número de transacción se actualizó es duplicado.";
                popupAceptar.ShowOnPageLoad = true;
               
     
            }
            else
            {
                lblmensOk.Text = "ERROR AL ACTUALIZAR ";
                popupAceptar.ShowOnPageLoad = true;
       
            }
            

        }
        void generarTrama(string codigo)
        {
            blActualizarTransferencia = new FacadeActualizarTransferencia();
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            string ruta = Server.MapPath(ConfigurationManager.AppSettings["RutaDat"]);
            List<Globales.lista_TransferenciaReponsable> lista = new List<Globales.lista_TransferenciaReponsable>();
            string a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s;
            int dat = 10000;
            int count = 0;
            try
            {
                lista = (List<Globales.lista_TransferenciaReponsable>)blGestionarTransferencia.listarTransferenciaEstado(codigo);
                string rutadat = Server.MapPath(ConfigurationManager.AppSettings["RutaDat"]);
                //string path = ruta + codigo + ".dat";
                string Filess = rutadat + "\\" + codigo + ".dat";


                a = "{1:F01BCPLPEPLAXXX0000000000}{2:I103" + lista[0].codigoCorresponsal + "XXXXN}{4:\n";
                b = ":20:" + lista[0].nroOperacion;
                c = ":23B:CRED\n";
                d = ":32A:" + lista[0].fecValor.ToString("yyyyMMdd").Substring(2, 6) + "" + lista[0].moneda.ToString() + "" + lista[0].monto.ToString().Replace(".", ",") + "\n";
                List<TB_Cuenta_Cliente> cliente = new List<TB_Cuenta_Cliente>();
                cliente = blGestionarTransferencia.listaClientexID(lista[0].idcCliente);
                e = ":50F:/" + cliente[0].nroCuenta.ToString().Replace("-", "") + "\n";
                f = "1/" + lista[0].nomCliente;
                g = "2/" + lista[0].dirCliente;
                h = "3/PE/SURCO LIMA";
                List<TB_Corresponsal> listacorresponsal = new List<TB_Corresponsal>();
                listacorresponsal = blGestionarTransferencia.listarCorrespansalxID(lista[0].codigoCorresponsal);
                j = ":53D:/" + listacorresponsal[0].ctaBanqueroCorresponsal;
                List<TB_BcoDestino> banco = new List<TB_BcoDestino>();
                IFacadeSolicitarTrasnferencia blSolicitarTransgferencia = new FacadeSolicitarTransferencia_Imp();
                banco = blSolicitarTransgferencia.getCodigoCorresponsal(lista[0].codigoBcoDestino);
                k = banco[0].nombreBcoDestibo;
                m = banco[0].ciudadBcoDestino + "," + banco[0].paisBcoDestino;
                n = ":57A:" + lista[0].codigoBcoDestino;
                o = ":59:/" + lista[0].cuentaBeneficiario;
                p = "" + lista[0].nomBeneficiario;
                q = "" + lista[0].dirBeneficiario;
                r = ":71A:" + lista[0].tipoCargo;
                s = "-}";
                using (FileStream fs = new FileStream(Filess, FileMode.Create, FileAccess.ReadWrite))
                {
                    fs.Close();
                }
                using (StreamWriter sw = new StreamWriter(Filess))
                {
                    sw.WriteLine(a);
                    sw.WriteLine(b);
                    sw.WriteLine(c);
                    sw.WriteLine(d);
                    sw.WriteLine(e);
                    sw.WriteLine(f);
                    sw.WriteLine(g);
                    sw.WriteLine(h);
                    // sw.WriteLine(i);
                    sw.WriteLine(j);
                    sw.WriteLine(k);
                    sw.WriteLine(m);
                    sw.WriteLine(n);
                    sw.WriteLine(o);
                    sw.WriteLine(p);
                    sw.WriteLine(q);
                    sw.WriteLine(r);
                    sw.WriteLine(s);
                    sw.Flush();
                    sw.Close();
                }
                //using (StreamWriter writer = new StreamWriter(
                //new FileStream(Filess, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)))
                //{
                //    //writer.WriteLine(string.Format("{0} | {1} | {2} | {3}", DateTime.Now, e.Source, e.Message, e.InnerException));
                //    writer.WriteLine(a);

                //    writer.Flush();
                //    writer.Close();
                //}

                blGestionarTransferencia.actualizarEstado(codigo, "AUTORIZADA", null);

                //string nro = grdDuplicados.GetRowValues(grdDuplicados.FocusedRowIndex, "nroOperacion").ToString();
                //double montod = Convert.ToDouble(grdDuplicados.GetRowValues(grdDuplicados.FocusedRowIndex, "monto"));
                //string monedad = grdDuplicados.GetRowValues(grdDuplicados.FocusedRowIndex, "moneda").ToString();
                //string codigoCorresponsal = grdDuplicados.GetRowValues(grdDuplicados.FocusedRowIndex, "codigoCorresponsal").ToString();
                //string idcliente = Convert.ToString(grdDuplicados.GetRowValues(grdDuplicados.FocusedRowIndex, "idcCliente"));
                //List<TB_Cuenta_Cliente> listaCuentaCliente = new List<TB_Cuenta_Cliente>();
                //listaCuentaCliente = blGestionarTransferencia.listaClientexID(idcliente);
                ////; listaCuentaCliente[0].nroCuenta.ToString()
                //string nrocuenta = listaCuentaCliente[0].nroCuenta.ToString();
                //TB_CuentasAfectadas cuenta = new TB_CuentasAfectadas();

                //List<TB_Corresponsal> ListarCuentaAbono = new List<TB_Corresponsal>();

                //ListarCuentaAbono = blActualizarTransferencia.ListarCuentaAbono(codigoCorresponsal);

                //List<TB_Cuenta_Cliente> ListarTipoMonedaCuenta = new List<TB_Cuenta_Cliente>();
                //ListarTipoMonedaCuenta = blActualizarTransferencia.ListarCuentaCliente(nrocuenta);

                //string monedacuenta = ListarTipoMonedaCuenta[0].TipoMoneda;
                //decimal saldo = Convert.ToDecimal(ListarTipoMonedaCuenta[0].saldoCuenta);
                //double tipocambio = 1;
                //double montoenviar = Convert.ToDouble(montod);
                //double montocomsision = 0;

                //if (montoenviar >= 0 && montoenviar <= 1000)
                //{
                //    montocomsision = 18;
                //}

                //if (montoenviar >= 1001.00 && montoenviar <= 2500)
                //{
                //    montocomsision = 25;
                //}

                //if (montoenviar >= 2501.00 && montoenviar <= 5000)
                //{
                //    montocomsision = 35;
                //}

                //if (montoenviar >= 5001.00 && montoenviar <= 10000)
                //{
                //    montocomsision = 70;
                //}

                //if (montoenviar >= 10001.00 && montoenviar <= 20000)
                //{
                //    montocomsision = 120;
                //}
                //if (montoenviar >= 20001)
                //{
                //    montocomsision = 150;
                //}

                //if (cboMoneda.Text.Trim().ToUpper() == "USD")
                //{
                //    if (monedacuenta == "USD")
                //    {
                //        tipocambio = 1.0000;
                //    }
                //    if (monedacuenta == "PEN")
                //    {
                //        tipocambio = 2.7500;
                //    }
                //}
                //if (cboMoneda.Text.Trim().ToUpper() == "EUR")
                //{
                //    if (monedacuenta == "PEN")
                //    {
                //        tipocambio = 3.7529;
                //    }
                //}

                //cuenta.nroOperacion = nro;
                //cuenta.moneda = monedad;
                //cuenta.ctaAbono = ListarCuentaAbono[0].ctaAbono;
                //cuenta.montoAbono = Convert.ToDecimal(montod);
                //cuenta.ctaComision = "522208000001";
                //cuenta.montoComision = Convert.ToDecimal(montocomsision);
                //cuenta.ctaDebito = nrocuenta;
                //cuenta.montoDebito = Convert.ToDecimal((montoenviar + montocomsision) * tipocambio);
                //cuenta.montoTRF = Convert.ToDecimal(montoenviar + montocomsision);
                //cuenta.tipoCambio = Convert.ToDecimal(tipocambio);
                //decimal saldofinal = 0;
                //saldofinal = saldo - Convert.ToDecimal((montoenviar + montocomsision) * tipocambio);
                //if (blActualizarTransferencia.InsertarCuentas(cuenta))
                //{
                //    blActualizarTransferencia.ActualizarSaldoCliente(nrocuenta, saldofinal);
                //}


                //lblmensOk.Text = "Se generó las tramas correspondientes de las transacciones numero. " + codigo;
                //popupOK.HeaderText = "Generación de trama";
                //popupOK.ShowOnPageLoad = true;

            }
            catch (Exception)
            {
            }
        }
        protected void btnNoDuplicadas_Click(object sender, EventArgs e)
        {
            blGestionarTransferencia = new FacadeGestionarTransferencia_Imp();
            if (blGestionarTransferencia.actualizarEstado(grdDuplicados.GetRowValues(grdDuplicados.FocusedRowIndex, "NROOPERACION1").ToString(), "AUTORIZADA", null))
            {

                
                lblmensOk.Text = "El número de transacción se actualizó no es duplicada";
                popupAceptar.ShowOnPageLoad = true;
                this.cargarGridDuplicados();
                return;
            }
            else
            {
                lblmensOk.Text = "Error al actualizar por favor vuelva a intentarlo";
                popupAceptar.ShowOnPageLoad = true;
                return;
            }
        }

        protected void btnAceptarOk_Click(object sender, EventArgs e)
        {
            popupAceptar.ShowOnPageLoad = false;
        }

    
    }
}